using System;
using SharpMud.Scripting.Metadata;

namespace SharpMud.Scripting.Processing.Processors.CLR
{
	/// <summary>
	/// Provides an abstract definition and mechanism for processing scripts written in a .NET language
	/// </summary>
	public abstract class CLRScriptProcessor : ScriptLanguageDefinition
	{
		#region Constructors
		/// <summary>
		/// Initializes a new, blank, instance of CLRScriptProcessor
		/// </summary>
		protected CLRScriptProcessor()
			:base()
		{
		}
		/// <summary>
		/// Initializes a new instance of CLRScriptProcessor
		/// </summary>
		/// <param name="languageGuid"></param>
		protected CLRScriptProcessor(System.Guid languageGuid)
			:base(languageGuid)
		{
		}

//		protected CLRScriptProcessor(System.Guid languageGuid, string[] languageNames)
//			:base(languageGuid,languageNames)
//		{
//		}

		/// <summary>
		/// Initializes a new instance of CLRScriptProcessor
		/// </summary>
		/// <param name="languageGuid"></param>
		/// <param name="languageNames"></param>
		protected CLRScriptProcessor(System.Guid languageGuid, params string[] languageNames)
			:base(languageGuid,languageNames)
		{
		}

//		protected CLRScriptProcessor(string[] languageNames)
//			:base(languageNames)
//		{
//		}

		/// <summary>
		/// Initializes a new instance of CLRScriptProcessor
		/// </summary>
		/// <param name="languageNames"></param>
		protected CLRScriptProcessor(params string[] languageNames)
			:base(languageNames)
		{
		}
		#endregion

		/// <summary>
		/// The CodeDomProvider that should be used to compile the script
		/// </summary>
		public abstract System.CodeDom.Compiler.CodeDomProvider CodeProvider {get;}
	}
}